#include "myscene.h"


myScenr::myScenr(QObject *parent) : QGraphicsScene(parent)
{
    int i = 0;
    for(i = 0;i<16;i++)//在该场景上添加（4*4）个图元
    {
        itm[i] = new myitem;
        itm[i]->setPos(i/4 * itm[i]->boundingRect().width(),i%4 * itm[i]->boundingRect().height());
        this->addItem(itm[i]);//依次添加进场景
    }
    this->life_time = 2000;//初始化老鼠刷新时间
    this->mouse_count = 4;//初始化每次刷新的最大数量
    pt = new QTimer(this);//刷新老鼠的定时器
    ppt = new QTimer(this);//更新老鼠刷新速度和数量定时器
    connect(pt,SIGNAL(timeout()),this,SLOT(showmouse()));
    connect(ppt,SIGNAL(timeout()),this,SLOT(change_time()));

}

void myScenr::showmouse()//老鼠出动
{
    int count = rand()%this->mouse_count+1;//随机数获取出现几只老鼠
    int i = 0;
    for( i = 0;i<16;i++)//老鼠出现之前上一波老鼠回洞
    {
        itm[i]->setpic(":/pic/2");
        itm[i]->setmouse(false);
    }
    for(i = 0;i < count;i++)
    {
        int pos = rand()%16;//随机数获取老鼠出现在那个图元
        itm[pos]->setpic(":/pic/4");
        itm[pos]->setmouse(true);

    }
}

void myScenr::change_time()//改变刷新速度和数量
{
    this->life_time -= 500;//每30s将刷新时间减小0.5s，一局游戏控制在2min
    this->mouse_count += 2;
    if(this->life_time == 0)//如果时间耗尽，发送finshed信号
    {
        emit finshed();
    }
}
void myScenr::start()//开始
{
    int i = 0;
    for( i = 0;i<16;i++)
    {
        itm[i]->setstart(true);//设置每一个图元的start状态
    }
    ppt->start(30000);//启动定时器
    pt->start(this->life_time);
}


void myScenr::spause()//暂停
{

    pt->stop();
    ppt->stop();
    int i = 0;
    for( i = 0;i<16;i++)
    {
        itm[i]->setstart(false);
    }

}

void myScenr::stop()//停止
{
   pt->stop();
   ppt->stop();
   this->life_time = 2000;
   this->mouse_count = 4;
   int i = 0;
   for( i = 0;i<16;i++)
   {
       itm[i]->setpic(":/pic/2");
       itm[i]->setmouse(false);
       itm[i]->setstart(false);
   }
   emit clear();//向mainwindow发送停止清空分数信号
}
